package br.com.news.web;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.com.news.utils.database.beans.CategoriaBean;
import br.com.news.utils.database.beans.UsuarioBean;
import br.com.news.utils.database.beans.enums.Perfil;
import br.com.news.web.annotations.Permission;
import br.com.news.web.service.UsuarioService;

@Permission(profile={Perfil.ADMINISTRADOR})
@ManagedBean
@ViewScoped
public class UsuarioMB extends BaseMB {
	
	private static final long serialVersionUID = -6563613314975388350L;

	public static final String ROUTE = "usuario.xhtml";
	
	private UsuarioBean usuarioBuscar;
	@ManagedProperty("#{usuarioService}")
	private UsuarioService usuarioService;
	
	private boolean botaoEditar;
	
	private List<UsuarioBean> listUsuario;
	
	public UsuarioMB() {
		usuarioBuscar = new UsuarioBean();
		usuarioBuscar.setStatus(true);
		listUsuario = new ArrayList<UsuarioBean>();
	}
	
	public void buscar() {
		botaoEditar = false;
		listUsuario = usuarioService.findByExample(usuarioBuscar);
	}
	
	public void salvar() {
		if (usuarioBuscar.getLogin().equals("")) {
			addErrorMessage("Favor preencher um login valido!");
			return;
		}
		if (usuarioBuscar.getNome().equals("")) {
			addErrorMessage("Faavor preencher o nome!");
			return;
		}
		if (usuarioBuscar.getEmail().equals("")) {
			addErrorMessage("Faavor preencher o email!");
			return;
		}
		
		if (usuarioBuscar.getSenha().equals("")) {
			addErrorMessage("Faavor preencher a senha!");
			return;
		}
		
		if (botaoEditar) {
			getUsuarioService().update(usuarioBuscar);
			addInfoMessage("Uuario editado com sucesso!");
		} else {

			getUsuarioService().save(usuarioBuscar);
			addInfoMessage("Usuario cadastrado com sucesso!");
		}
		
		usuarioBuscar = new UsuarioBean();
		usuarioBuscar.setStatus(true);
		buscar();
		
	}
	
	public void editar(UsuarioBean usuario) {
		botaoEditar = true;
		usuarioBuscar = usuario;
		usuarioBuscar.setSenha(usuario.getSenha());
	}
	
	public void limpar() {
		usuarioBuscar = new UsuarioBean();
		botaoEditar = false;
	}

	public UsuarioBean getUsuarioBuscar() {
		return usuarioBuscar;
	}

	public void setUsuarioBuscar(UsuarioBean usuarioBuscar) {
		this.usuarioBuscar = usuarioBuscar;
	}

	public List<UsuarioBean> getListUsuario() {
		return listUsuario;
	}

	public void setListUsuario(List<UsuarioBean> listUsuario) {
		this.listUsuario = listUsuario;
	}

	public UsuarioService getUsuarioService() {
		return usuarioService;
	}

	public void setUsuarioService(UsuarioService usuarioService) {
		this.usuarioService = usuarioService;
	}

	public boolean isBotaoEditar() {
		return botaoEditar;
	}

	public void setBotaoEditar(boolean botaoEditar) {
		this.botaoEditar = botaoEditar;
	}
	
}
